package nl.hanze.web.gba.logic;

import com.google.gson.Gson;

import nl.hanze.web.gba.dao.DAOFacade;
import nl.hanze.web.gba.domain.NatuurlijkPersoon;
import nl.hanze.web.gba.logic.security.AESCodec;

public class Logic {
	private DAOFacade facade;
	private AESCodec codec;
	
	/**
	 * Constructor
	 * @param facade
	 */
	public Logic(DAOFacade facade, AESCodec codec) {
        this.facade = facade;
        this.codec = codec;
    }
	
	/**
	 * Natuurlijk persoon opzoeken a.d.h.v. het BSN
	 * 
	 * @param bsn
	 * @return 
	 */
	public NatuurlijkPersoon getNatuurlijkPersoonbyBSN(long bsn) {
		return this.facade.getNatuurlijkPersoonDAO().getNatuurlijkPersoonByBSN(bsn);
	}
	
	/**
	 * Natuurlijkpersoon toevoegen
	 * 
	 * @param np
	 * @return
	 */
	public boolean addNatuurlijkPersoon(NatuurlijkPersoon np){
		return facade.getNatuurlijkPersoonDAO().addNatuurlijkPersoon(np);
	}
	
	/**
	 * Decodeer SHA encoded string
	 * 
	 * @param shaEncoded
	 * @return
	 * @throws Exception 
	 */
	public String decodeSHA(String shaEncoded){
		try {
			return codec.decode(shaEncoded);
		} catch (Exception e) {
			return null;
		}
	}
	
	/**
	 * Encode een string met SHA
	 * 	
	 * @param plain
	 * @return
	 */
	public String encodeSHA(String plain){
		try {
			return codec.encode(plain);
		} catch (Exception e) {
			return null;
		}
	}
	
	public NatuurlijkPersoon jsonToNatuurlijkPersoon(String json){
		NatuurlijkPersoon np = new Gson().fromJson(json, NatuurlijkPersoon.class);
		
		return np;
	}
}
